package main

import (
	"fmt"
	"sync"
)

func main() {

	number, letter := make(chan bool), make(chan bool)

	wg := &sync.WaitGroup{}

	wg.Add(1)
	go func() {
		i := 1
		for {
			select {
			case <-number:
				fmt.Printf("%d", i)
				i++
				letter <- true

			}

		}
	}()

	go func() {
		i := 'a'
		for {
			select {
			case <-letter: //   阻塞等待 对方的唤醒
				if i >= 'z' {
					fmt.Printf("%s", string(i))

					wg.Done()
					return
				}
				fmt.Printf("%s", string(i))
				i++
				number <- true // 解除对方的阻塞
			}
		}
	}()
	number <- true
	wg.Wait() //  避免结果  显示不出来的情况

}
